perm filename CRNCH.FAI[CMS,LCS] blob sn#183915 filedate 1975-10-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00010 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE OO
C00004 00003	INTRU:	MOVE EN,JOBCNI
C00005 00004	GNAME:	SETZM FILEXT+1
C00006 00005	GETNAM:	MOVEI A,
C00008 00006	EVAL:	HRRZI MA,1
C00012 00007	BACK:	HRRZI 6,-2(CX)
C00015 00008	GETO:	SKIPN OU	??
C00017 00009	SAVIT:	HRRZM 6,FIXFLG
C00023 00010	TABL:	REPEAT 7,{JFCL↔}
C00027 ENDMK
C⊗;
	TITLE OO
	EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
	A←1 ↔ B←2 ↔ FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11
	CX←13 ↔ MA←14 ↔ N←15 ↔ P←17 ↔ NBUFS←←4
	MEM←20000 ↔ C←16

ERRO:	OUTSTR QMARK
	JRST RST

RST:	RESET
INT:	HRRZI EN,INTRU
	HRRZM EN,JOBAPR
	MOVE EN,IPC
	INTENB EN,

LOOP:	MOVE P,PDPO
	OUTSTR CRLF

	PUSHJ P,INTY
	PUSHJ P,EVAL

;	PUSHJ P,GETO

	JRST LOOP

IBUF:	BLOCK 4
FILNAM:	0
FILEXT:	0
	0
FILPPN:	0


INTY:	HRRZI N,MEM+1
	HRRZI TS,(N)
	OUTSTR ASTR
	CLRBFI
	OUTSTR [ASCIZ/	FILE NAME = /]
	PUSHJ P,GNAME
	OPEN 11,[14↔'DSK   '↔IBUF]
	JRST 4,.
	INBUF 11,NBUFS
	LOOKUP 11,FILNAM
	JRST INTY
	HRRZI EN,MEM+200
	CORE EN,
	HALT

	PUSHJ P,INP
INLIN:	ILDB EN,IBUF+1
	HRRZM EN,(TS)
	SETZM 1(TS)
	ADDI TS,2
	SOJG INLIN
	JRST INLIN-1

INP:	IN 11,
	JRST MNUM
	STATO 11,20000
	JRST 4,.
	POP P,
	POPJ P,

MNUM:	HRRZI 700
	HRLM IBUF+1
	HRRZ IBUF+2
	IMULI 5
	POPJ P,

EXCT:	HLRZ 6,6
	XCT TABL(6)
	JRST CKEX1+2
INTRU:	MOVE EN,JOBCNI
	MOVE OU,JOBTPC
	TRNN EN,20000
	DISMIS
CORUP:	SOJ OU,
	MOVEM OU,IPC+1
	UWAIT
	DEBREAK
	HRRZ 1,JOBREL
	AOJ 1,
	CORE 1,
	JRST TABL+77
	INTJEN IPC

IPC:	20000 ↔	0 ↔	PPN: 	'CMSLCS'
GNAME:	SETZM FILEXT+1
	SETZM FILPPN
	MOVE A,['DMD   ']
	MOVEM A,FILEXT
	PUSHJ P,GETNAM
	SKIPN A
 	MOVE A,['PFILE ']
GEXT:	MOVEM A,FILNAM
	CAIE C,"."
	JRST NOEXTN
	PUSHJ P,GETNAM
	MOVEM A,FILEXT
NOEXTN:	CAIE C,"["
	JRST FFDX
	PUSHJ P,GETP
	HRLZM A,FILPPN
	PUSHJ P,GETP
	HRRM A,FILPPN
FFDX:	INCHRW C
	CAIE C,12
	JRST FFDX
	POPJ P,
GETNAM:	MOVEI A,
	MOVE B,[440600,,A]
GETNML:	PUSHJ P,RCH
	POPJ P,
	SUBI C,40
	TLNE B,770000
	IDPB C,B
	JRST GETNML

GETP:	MOVEI A,
GETPL:	PUSHJ P,RCH
	POPJ P,
	TRNE A,770000
	JRST GETPL
	LSH A,6
	ADDI A,-40(C)
	JRST GETPL

RCH:	INCHWL C
	CAIN C,42
	JRST RCHQ
	CAIE C,11
	CAIN C," "
	JRST RCH
	CAIE C,"."
	CAIN C,","
	POPJ P,
	CAIE C,"["
	CAIN C,"]"
	POPJ P,
RCHQR:	CAIGE C,40
	POPJ P,
	CAIL C,"a"
	CAILE C,"z"
	CAIA
	SUBI C,40
POPJ1:	AOS (P)
	POPJ P,

RCHQ:	INCHWL C
	JRST RCHQR
EVAL:	HRRZI MA,1
	HRRZI CX,(N)
	JRST BGIN
MVM:	HRLI OU,400000(MA)
	HRRZI 6,2
	JRST LMVM
LAEQ:	HRRZI 6,2
	CAIE OU,(MA)
	ADDI 6,2
	SUBI 5,2
	HLL OU,(5)
LMVM:	MOVEM OU,(5)
	SETZM 1(5)
	ADDI 5,2
	SUBI TS,(6)
	ADDI 6,(5)
	HRLZI 6,(6)
	HRRI 6,(5)
	BLT 6,(TS)
	JRST LKMO
FDEQ:	MOVE 4,MEM(MA)
	HRRZI 5,(N)
LKMO:	CAMN 4,(5)
	JRST EQU
ADIN:	ADDI 5,2
	CAIGE 5,(TS)
	JRST LKMO
	ADDI MA,2
BGIN:	CAIGE MA,-MEM(N)
	JRST FDEQ
	HRRZI MA,-MEM(CX)
	ADDI N,2
	CAIGE N,(TS)
	JRST FDEQ
	JRST BACK
EQU:	HRRZI OU,(MA)
	CAILE TS,2(5)
	CAIG N,MEM+2(MA)
	JRST CKLA
	MOVE 6,MEM+2(MA)
	CAMN 6,2(5)
	HRRI OU,2(MA)
CKLA:	CAIL 5,2(N)
	SKIPL 6,-2(5)
	JRST .+3
	CAIN MA,2(6)
	JRST LAEQ
	CAIE OU,(MA)
	JRST MVM
	SKIPL 1(5)
	SKIPN 6,MEM+1(OU)
	JRST ADIN
CKEX1:	TRNN 6,777777
	JRST EXCT
	HRLI OU,400001(OU)
	AOJ OU,
	MOVEM OU,1(5)
DOUT:	CAIGE CX,-2(TS)
	JRST ADIN
BACK:	HRRZI 6,-2(CX)
	ADDI 6,2
	SKIPGE 1(6)
	JRST NEGA+1
	SKIPGE OU,(6)
	AOBJN OU,NEGA
	HRRZI OU,-MEM(6)
	HRLI OU,400000(OU)
NEGA:	MOVEM OU,1(6)
	CAIGE 6,-2(TS)
	JRST BACK+1
	CAIE TS,2(CX)
	JRST NOT1
	SUBI TS,2
	MOVE EN,(TS)
	SUB OU,ONEB
	CAME OU,EN
	CAIN CX,MEM(OU)
	AOBJN OU,NEW1
	SKIPL FL,FIXFLG
	AOBJN OU,FIXIT
	HRRZI EN,MEM+1(OU)
	ADD OU,ONEB
CKSAV:	SKIPN SAVFLG
	POPJ P,
	HRRM TS,INTY
	MOVEM EN,TMP
	POPJ P,
NEW1:	SKIPGE FL,FIXFLG
	JRST CKSAV
	HRRZI OU,-MEM+1(CX)
	HRLI OU,400000(OU)
	JRST ADTS
NOT1:	HRRZI EN,-MEM-2(TS)
	HRLI EN,400000-MEM(CX)
	MOVE OU,EN
	ADD OU,ONEB
	SKIPGE FL,FIXFLG
	JRST CKSAV
	MOVEM EN,(TS)
	MOVEM OU,1(TS)
	HRRZI OU,-MEM+1(TS)
	HRLI OU,400000(OU)
ADTS:	ADDI TS,2
FIXIT:	SKIPL EN,TMP
	JRST CKFLS
	MOVEM EN,(TS)
	HRRZI EN,1(TS)
	ADDI TS,2
CKFLS:	PUSHJ P,(FL)
	SETOM FIXFLG
	JRST CKSAV
GETO:	SKIPN OU	;??
	POPJ P,
	TLZN OU,400000
	TRNN OU,400000
	JRST GOUT
	MOVE EN,OU
	HRRZI 4,777775
	JRST MKOUT
PUDO:	HRLI OU,(4)
	PUSH TS,OU
	MOVE OU,EN
GOUT:	HLRZ 4,OU
MOR:	MOVE EN,MEM(4)
	TLZE EN,400000
	JRST PUDO
	TRNE EN,400000
	JRST MKOUT
	TLNE EN,777777
	JRST DOIT

	OUTCHR EN

ADO:	ADDI 4,2
	CAIG 4,(OU)
	JRST MOR
	TLNN TS,777777
	JRST TYOUT
	POP TS,OU
	HLRZ 4,OU
	JRST ADO

DOIT:	HLRZS EN
	XCT TABL(EN)
	JRST ADO

MKOUT:	HLRZ 6,EN
	HRLI EN,(EN)
	TRZ EN,400000
	MOVEM EN,MEM(6)
	JRST ADO

TYOUT:	POPJ P,

SAVIT:	HRRZM 6,FIXFLG
	OUTSTR CRLF
FIXTS:	SUBI TS,2
	MOVE OU,-1(TS)
	SUB P,ONEB
	JRST DOUT

CRFIX:	CAIGE 5,-2(TS)
	POPJ P,
	JRST FIXTS
INDER:	HRRZI 6,.+2
	JRST SAVIT
	MOVEM OU,(EN)
	POPJ P,
LITA:	HRRZI 6,.+2
	JRST SAVIT
	SUB OU,ONEB
	MOVEM OU,(EN)
	POPJ P,
RPLACE:	HRRZI 6,.+2
	JRST SAVIT
	HRR OU,MEM(OU)
	TLZ OU,400000
	TRO OU,400000
	MOVEM OU,(EN)
	POPJ P,
ADER:	HRRZI 6,.+2
	JRST SAVIT
	MOVE 4,MEM-1(OU)
	MOVEM 4,2(TS)
	CAIE TS,1(OU)
	JRST OLD1
	SUBI TS,2
	MOVE OU,(OU)
OLD1:	MOVEM OU,3(TS)
	MOVE 4,-1(EN)
	MOVEM 4,(TS)
	MOVE 5,(EN)
	TRNE 5,-1
	TRNE 5,400000
	JRST POIT
POID:	MOVEM 5,1(TS)
	HRRZI OU,-MEM+2(TS)
	HRLI OU,400000-MEM(TS)
	MOVEM OU,4(TS)
	AOBJP OU,
	MOVEM OU,5(TS)
	HRRZI OU,-MEM+5(TS)
	HRLI OU,400000(OU)
	MOVEM OU,(EN)
	ADDI TS,6
	POPJ P,
POIT:	HRRZI 5,(EN)
	HRLI 5,400000(EN)
	JRST POID

NDIRT:	HRRZI 6,.+2
	JRST SAVIT
	MOVE OU,MEM(OU)
	MOVEM OU,(EN)
	POPJ P,
TABL:	REPEAT 7,{JFCL↔}
	JRST RST
	JFCL
	JFCL
	JFCL
	JFCL
	JFCL
	PUSHJ P,CRFIX
	REPEAT 24,{JFCL↔}
	JFCL
	REPEAT 10,{JFCL↔}
	JFCL
	JFCL
	JFCL
	JFCL
	REPEAT 13,{JFCL↔}
	PUSHJ P,INDER
	REPEAT 4,{JFCL↔}
	JFCL
	PUSHJ P,NDIRT
	PUSHJ P,ADER
	JFCL
	JFCL
	REPEAT 2,{JFCL↔}
	JFCL
	REPEAT 4,{JFCL↔}
	JFCL
	PUSHJ P,LITA
	JFCL
	SETZM SAVFLG
	JFCL
	JFCL
	JFCL
	PUSHJ P,RPLACE
	SETOM SAVFLG
	REPEAT 53,{JFCL↔}
SVAC:	BLOCK 20
POPS:	POPJ P,	↔ PDPO:	IOWD 100,PDL
PDL:	BLOCK 100
QMARK:	45767706424
CRLF:	64240,,0     ↔	ASTR:	ASCIZ/*/
FIXFLG:	-1	     ↔  CRLFD:	64245,,600000
TMP:	0    ↔	SAVFLG:	-1
LITFLG:	-1
ONEB:	1,,1 ↔	TWOB:	2,,2
	BLOCK 400
	END RST